/*******************************************************************************
 * Copyright (c) 2004, 2005 Elias Volanakis and others.
?* All rights reserved. This program and the accompanying materials
?* are made available under the terms of the Eclipse Public License v1.0
?* which accompanies this distribution, and is available at
?* http://www.eclipse.org/legal/epl-v10.html
?*
?* Contributors:
?*????Elias Volanakis - initial API and implementation
?*******************************************************************************/
package org.eclipse.gef.examples.shapes.model.commands;

import org.eclipse.gef.commands.Command;

import org.eclipse.gef.examples.shapes.model.Connection;

/**
 * A command to disconnect (remove) a connection from its endpoints.
 * The command can be undone or redone.
 * @author Elias Volanakis
 */
public class ConnectionDeleteCommand extends Command {

/** Connection instance to disconnect. */
private final Connection connection;

/** 
 * Create a command that will disconnect a connection from its endpoints.
 * @param conn the connection instance to disconnect (non-null)
 * @throws IllegalArgumentException if conn is null
 */ 
public ConnectionDeleteCommand(Connection conn) {
	if (conn == null) {
		throw new IllegalArgumentException();
	}
	setLabel("connection deletion");
	this.connection = conn;
}


/* (non-Javadoc)
 * @see org.eclipse.gef.commands.Command#execute()
 */
public void execute() {
	connection.disconnect();
}

/* (non-Javadoc)
 * @see org.eclipse.gef.commands.Command#undo()
 */
public void undo() {
	connection.reconnect();
}
}
